
package repaso;

public class Serie {

    long signo = 1; // -1 para signo negativo y 1 para positivo
    public String serie = "";
    public long valorTotal = 0;

    public void serieFibonacci(int contador) {
        int x = 1;
        int anterior = 0;
        int temp;
        int contadorSTotalsignos = 1;
        int contadorSignos = contadorSTotalsignos;
        long sumaTotal = 0;
        String s = "";

        if (contador > 0) {
            s = s + signo() + (x - 1) + "! ";
            System.out.print(signo() + (x - 1) + "! ");
            sumaTotal = sumaTotal + (factorial(x) * signo);
            contadorSignos--;
        }
        
        while (contador > 1) {
            if (contadorSignos == 0) {
                cambiarSigno();
                contadorSTotalsignos++;
                contadorSignos = contadorSTotalsignos;
            }
            System.out.print(signo() + x + "! ");
            s = s + signo() + x + "! ";
            sumaTotal = sumaTotal + (factorial(x) * signo);
            temp = x;
            x = x + anterior;
            anterior = temp;
            contador--;
            contadorSignos--;
        }
        valorTotal = sumaTotal;
        serie = s;

        System.out.println("Suma Total: " + sumaTotal);
    }

    private long factorial(int numero) {
        long factorial = 1;
        while (numero != 0) {
            System.out.println(numero +":"+ factorial);
            factorial = factorial * numero;
            numero--;
        }
        return factorial;
    }

    private void cambiarSigno() {
        if (signo == 1) {
            signo = -1;
        } else {
            signo = 1;
        }
    }

    private String signo() {
        if (signo == -1) {
            return "-";
        } else {
            return "+";
        }
    }
    public static void main(String[] args) {
        Serie s = new Serie();
        System.out.println(s.factorial(13));
        s.serieFibonacci(7);
    }
}